Connection Between Observer & Observervable

struct ConsolePersonObserver: Observer<Person>{
void field_changed(Person& source, const string& field_name) override {
cout<<"Person's "<<field_name<<" has changed to "<<source.get_age()<<".\n";
}
};
//
Person p{20};
ConsolePersonobserver cpo;
p.subscribe(&cpo);
p.set_age(21);
p.set_age(22);
관찰자 디자인 패턴은 추가로
속성의 종속성, 스레드 안정성(MTSafe), 재진입 안정성(Reenterence)와 같은 문제들을 고려해야 한다.